library(nycflights13)
library(tidyverse)
Crie uma data completa numa variável única, com o formato “day-month-year”.
flights %>% unite("day-month-year", c("day", "month", "year"), sep = "-")
Divide a variável time_hour em duas; uma variável de time e a outra variável de hour.
flights %>% separate(time_hour, c("time", "hour"), sep = " " )
Recodifique a variável dep_delay para uma variável binário, que seja 1 quando tem atraso, e 0 quando não tem atraso (valores negativos significam decolagens antes do horário previsto).
flights %>% mutate(atraso = case_when(dep_delay > 0 ~ TRUE,
TRUE ~ FALSE))
A companhia aérea US Airways (código ‘US’) se fundiu com American Airlines (código ‘AA’) em 2015. Recodifique voos de US Airways como voos de American Airlines.
flights %>% mutate(new_carrier = case_when(year >= 2015 & carrier == "US" ~ "AA",
TRUE ~ carrier))
Use de novo o banco de dados flights:
Ordene o banco de dados de menor a maior duração (air_time), incluindo apenas os voos com destino de Anchorage (ANC).
flights %>% filter(dest == "ANC") %>% arrange(air_time)
Identifique o voo mais atrasado (dep_delay) entre LaGuardia (LGA) e Atlanta (ATL). Quão atrasado foi o voo?
voo_atrasado <- flights %>%
filter(origin == "LGA" & dest == "ATL") %>%
arrange(desc(dep_delay)) %>%
slice(1)
atraso <- round(voo_atrasado$dep_delay / 60) # transforma em minutos
O voo atrasou aproximadamente 15 horas para a decolagem.
Calcule a velocidade de cada voo, e selecione os três voos mais rápidos. Eles voaram de qual aeroporto para qual destino?
flights %>%
mutate(velocidade = distance/ air_time) %>%
arrange(-velocidade) %>%
top_n(3) %>%
select(origin, dest)
Para os voos com destino de Anchorage (ANC), verifique que eles são ordenados cronologicamente (por year, month, day, e dep_time) e gera uma nova variável com a duração (air_time) do voo anterior. Agora, compare a duração de cada voo com a duração do voo anterior.
flights %>% filter(dest == "ANC") %>%
arrange(year, month, day, dep_time) %>%
mutate(air_time_anterior = lag(air_time),
air_time_diferenca = air_time - air_time_anterior)
Usando os dados de flights de novo:
Transforme a variável origin para um factor (não-ordenado).
ex1 <- flights %>% mutate(origin = as_factor(origin))
levels(ex1$origin)
## [1] "EWR" "LGA" "JFK"
Salve o resultado de (1) e tente-se usar o novo banco de dados para recodificar o aeroporto de origem “EWR” para “Newark” usando case_when dentro de mutate. É possível?
#ex1 %>% mutate(origin2 = case_when(origin == "EWR" ~ "Newarl", TRUE ~ origin))
# Erro: must be a character vector, not a `factor` object
Não é possível.
Usando as funções dedicadas do pacote forcats, recodifique o factor origin para os nomes completos dos aeroportos (Newark, John F Kennedy e LaGuardia).
ex1 %>% mutate(origin_completa = fct_recode(origin,
"Newark" = "EWR",
"John F Kennedy" = "JFK",
"LaGuardia" = "LGA"
))
Transforme a variável month para um factor ordenado.
meses <- flights %>% mutate(month = as_factor(month))
meses
levels(meses$month)
## [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12"